//
//  UIImage+AFF.h
//  AnyfishApp
//
//  Created by Bob Lee on 15/9/6.
//  Copyright (c) 2015年 Anyfish. All rights reserved.
//

#import <UIKit/UIKit.h>
#import "UIImage+FileName.h"
#import "UIImage+Color.h"
#import "UIImage+animatedGIF.h"

@interface UIImage (AFF)

typedef enum {
    UIHelperImageRadiusTopLeft = 1,
    UIHelperImageRadiusTopRight = 1 << 1,
    UIHelperImageRadiusBottomRight = 1 << 2,
    UIHelperImageRadiusBottomLeft = 1 << 3
} UIHelperImageRadius;

/**
 *  根据图片名返回一张能够自由拉伸的图片 (从中间拉伸)
 */
+ (UIImage *)mh_resizableImage:(NSString *)imgName;
+ (UIImage *)mh_resizableImage:(NSString *)imgName capInsets:(UIEdgeInsets)capInsets;


/// 返回一张未被渲染的图片
+ (UIImage *)mh_imageAlwaysShowOriginalImageWithImageName:(NSString *)imageName;
/// 获取视频某个时间的帧图片
+ (UIImage *)mh_thumbnailImageForVideo:(NSURL *)videoURL atTime:(NSTimeInterval)time;

/// /// 获取屏幕截图
///
/// @return 屏幕截图图像
+ (UIImage *)mh_screenShot;

/**
 * @function
 * 说明 将已有图标添加圆角效果,并可制定圆角位置
 * @param image 原始图片
 * @param frame 图片要放入的容器控件的frame
 * @param corner 相对容器控件的 圆角大小
 * @param cornerMask 圆角位置
 
 * @return UIImage 制作好的图片
 */
+ (UIImage *)getCornerImageFromImage:(UIImage *)image containerFrame:(CGRect)frame withRadious:(CGFloat)corner cornerMask:(UIHelperImageRadius)cornerMask;

/**
 * @function
 * 说明 将已有图标添加圆角效果
 * @param image 原始图片
 * @param frame 图片要放入的容器控件的frame
 * @param corner 相对容器控件的 圆角大小
 
 * @return UIImage 制作好的图片
 */
+ (UIImage *)getCornerImageFromImage:(UIImage *)image containerFrame:(CGRect)frame withRadious:(CGFloat)corner;

/**
 * 剪裁图片为圆形（从图片中心计算）
 * @param clipToCircle  去除圆外面内容
 * @param diameter      直径，给0标示自动根据高度，宽度获取最优
 * @param borderColor   边线颜色
 * @param borderWidth   边线宽度
 * @param shadowOffSet  绘制阴影大小
 * @param
 */
- (UIImage *)cutToCircle:(BOOL)clipToCircle
             withDiamter:(CGFloat)diameter
             borderColor:(UIColor *)borderColor
             borderWidth:(CGFloat)borderWidth
            shadowOffSet:(CGSize)shadowOffset;

/**
 * 剪裁图片为圆角矩形（从图片中心计算）
 * @param radius        圆角半径
 * @param size          剪裁后图片大小(CGSizeZero时标示默认）
 * @param borderColor   边线颜色
 * @param borderWidth   边线宽度
 * @param shadowOffSet  绘制阴影大小
 * @param
 */
- (UIImage *)cutToCorner:(CGFloat)radius
                    size:(CGSize)size
             borderColor:(UIColor *)borderColor
             borderWidth:(CGFloat)borderWidth
            shadowOffSet:(CGSize)shadowOffset;

/**
 * @function
 * 说明 适配图片大小，缩放以适应
 * @param image 原始图片
 * @param tagWidth 目标宽度
 * @param tagHeight 目标高度
 
 * @return
 */
+ (CGSize)adaptSizeForImage:(UIImage *)image tagWidth:(CGFloat)tagWidth tagHeight:(CGFloat)tagHeight;

/**
 * 局部重用填充
 * @param  imageName  图片名称
 * @param  capInsets  固定填充范围控制
 
 * @return UIImage 
 */
+ (UIImage *)imageStretchedWithName:(NSString*)imageName capInsets:(UIEdgeInsets)capInsets;



/**
 聊天 - 不需要箭头
 */
+ (UIImage *)bubbleRoundCorner;

/**
 *  将图片旋转一定角度(只适配正方形图片，其它图片w勿用)；参考原点旋转
 *
 *  @param angle 角度
 *
 *  @return 旋转后的图片
 */
- (UIImage *)imageRotate:(CGFloat)angle;

/**
 * 获取文件名、二进制数据对应的图片格式
 */
+ (AFFImageType)imageType:(NSData*)data;

/**
 * 获取替换颜色的图片
 * @param  name  图片名称
 * @param  tintColor  替换的颜色
 
 * @return UIImage 
 */
+ (UIImage*)imageNamed:(NSString *)name tintColor:(UIColor*)tintColor;
+ (UIImage*)imageNamed:(NSString *)name tintColorStr:(NSString*)tintColorStr;
+ (UIImage *)fixOrientation:(UIImage *)aImage;
@end
